use std::fs::File;
use std::io::{Read, Write};

// | 模块                 | 方法             | 说明                                                         |
// | -------------------- | ---------------- | ------------------------------------------------------------ |
// | std::fs::File        | open()           | 静态方法，以 **只读** 模式打开文件                           |
// | std::fs::File        | create()         | 静态方法，以 **可写** 模式打开文件。 如果文件存在则清空旧内容 如果文件不存在则新建 |
// | std::fs::remove_file | remove_file()    | 从文件系统中删除某个文件                                     |
// | std::fs::OpenOptions | append()         | 设置文件模式为 **追加**                                      |
// | std::io::Writes      | write_all()      | 将 buf 中的所有内容写入输出流                                |
// | std::io::Read        | read_to_string() | 读取所有内容转换为字符串后追加到 buf 中                      |
fn main() {
    // let mut file = open_file(String::from("data.txt"));
    // read_file(String::from("data.txt"));
    // read_file2(file);

    let mut new_file = create_file(String::from("data2.txt"));
    append_file(new_file);
}

// 打开文件
fn open_file(filename: String) -> (File) {
    let file = File::open(filename).expect("打开失败");
    println!("文件打开成功\n:{:?}", file);
    return file;
}

// 读取内容
fn read_file(filename: String) {
    let mut file = File::open(filename).expect("打开失败");
    println!("文件打开成功\n:{:?}", file);
    let mut content = String::new();
    file.read_to_string(&mut content).unwrap();
    println!("{}", content);
}

fn read_file2(mut file: File) {
    let mut content = String::new();
    file.read_to_string(&mut content).unwrap();
    println!("{}", content);
}

// 创建文件
fn create_file(filename: String) -> (File) {
    let mut file = File::create(filename).expect("创建失败");
    println!("文件创建成功:{:?}", file);
    return file;
}

fn append_file(mut file: File) {
    file.write("www.sanga.site\n".as_bytes()).expect("追加内容失败");
    file.write("www.sanga.site\n".as_bytes()).expect("追加内容失败");
    file.write("www.sanga.site\n".as_bytes()).expect("追加内容失败");
    println!("\n数据追加成功");
}
